<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<!--<script>-->
<!--    &lt;!&ndash; Generator:生成器函数是一个带星号函数,而且是可以暂停执行和恢复执行的 &ndash;&gt;-->
<!--    function* genDemo() {-->
<!--        console.log(" 开始执行第一段 ")-->
<!--        yield 'generator 2'-->
<!--        debugger-->
<!--        console.log(" 开始执行第二段 ")-->
<!--        yield 'generator 2'-->

<!--        console.log(" 开始执行第三段 ")-->
<!--        yield 'generator 2'-->

<!--        console.log(" 执行结束 ")-->
<!--        return 'generator 2'-->
<!--    }-->
<!--    function testFun(){-->
<!--        console.log('testFun');-->
<!--        debugger-->
<!--        return 'testFun';-->
<!--    }-->

<!--    console.log('main 0')-->
<!--    let gen = genDemo()-->
<!--    console.log(gen.next().value)-->
<!--    console.log('main 1')-->
<!--    console.log(gen.next().value)-->
<!--    testFun();-->
<!--    console.log('main 2')-->
<!--    console.log(gen.next().value)-->
<!--    console.log('main 3')-->
<!--    console.log(gen.next().value)-->
<!--    console.log('main 4')-->
<!--</script>-->
<!-- async ,await 与Generator，promise 之间的关系-->
<!--<script>-->
<!--    async function foo() {-->
<!--        console.log(1)-->
<!--        let a = await 100-->
<!--        console.log(a)-->
<!--        console.log(2)-->
<!--    }-->
<!--    console.log(0)-->
<!--    foo()-->
<!--    console.log(3)-->
<!--</script>-->
<!-- 综合应用-->
<script>
    async function foo() {
        console.log('foo')
    }
    async function bar() {
        console.log('bar start')
        await foo()
        console.log('bar end')
    }
    console.log('script start')
    setTimeout(function () {
        console.log('setTimeout')
    }, 0)
    bar();
    new Promise(function (resolve) {
        console.log('promise executor')
        resolve();
    }).then(function () {
        console.log('promise then')
    })
    console.log('script end')

</script>
</body>
</html>
